package cn.xopencode.securityservice.rpc.violate.dto;

import cn.xopencode.common.framework.validator.InEnum;
import cn.xopencode.securityservice.enums.suggest.SuggestLevelEnum;
import cn.xopencode.securityservice.enums.violate.ViolateLevelEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * 添加反三违及事故情况 Request DTO
 */
@Data
@Accessors(chain = true)
public class ViolateCreateReqDTO implements Serializable {
    /**
     * 发现时间
     */
    @NotNull(message = "发现时间不能为空")
    @ApiModelProperty(value = "发现时间", example = "2021-06-06")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date findTime;

    /**
     * 发现人
     */
    @NotNull(message = "发现人 不能为空")
    @ApiModelProperty(value = "发现人")
    private String discoverer;

    /**
     * 三违内容及事故内容
     */
    @NotNull(message = "三违内容及事故内容 不能为空")
    @Length(min = 0, max = 200, message = "三违内容及事故内容长度为 0-200 位")
    @ApiModelProperty(value = "三违内容及事故内容")
    private String content;
    /**
     * 责任人
     */
    @NotNull(message = "责任人 不能为空")
    @ApiModelProperty(value = "责任人")
    private String personLiable;
    /**
     * 事故级别
     */
    @NotNull(message = "事故级别不能为空")
    @InEnum(value = ViolateLevelEnum.class, message = "事故级别必须是 {value}")
    @ApiModelProperty(value = "事故级别，1:班组级,2:车间级,3:公司级")
    private Integer violateLevel;
    /**
     * 审核人
     */
    @NotNull(message = "审核人 不能为空")
    @ApiModelProperty(value = "审核人")
    private String reviewer;
    /**
     * 备注
     */
    @Length(min = 0, max = 50, message = "备注内容长度为 0-50 位")
    @ApiModelProperty(value = "备注")
    private String remark;
    /**
     * 积分
     */
    @ApiModelProperty(hidden = true)
    private Double score;
}
